package epoch.db.cmd;

import java.util.Set;

import epoch.db.interfaces.IDataAccess;
import epoch.game.core.distr.ThreadContext;

/**
 * 数据库操作
 * @author will
 * @date 2016年8月10日 下午3:51:08
 */
public abstract class DBCommand implements IDBCommand{
	/** 插入 */
	public static final int INSERT=1;
	/** 更新 */
	public static final int UPDATE=2;
	/** 删除 */
	public static final int DELETE=3;
	/** 查询 */
	public static final int QUERY=4;

	//具体操作类型
	public int optType;
	//回调
	public Object callback;
	//缓存键值
	public String cacheKey;
	//是否全部刷新缓存
	public boolean flush=false;
	// 执行线程
	public ThreadContext executeThread;
	// 序号
	public long id;
	// 清空表的缓冲
	public Set<String> flushTables;
	// 数据访问入口
	public IDataAccess dataAccess;
	
	public void destroy(){
		optType=0;
		callback=null;
		cacheKey=null;
		onDestroy();
	}
	
	public abstract DBCommandType getType();
	
	protected abstract void onDestroy();
	
}
